/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cn.edu.nju.software.greencreditsystem.service;

import cn.edu.nju.software.greencreditsystem.DAO.EnterpriseDAO;
import cn.edu.nju.software.greencreditsystem.domain.Enterprise;
import cn.edu.nju.software.greencreditsystem.domain.EnterpriseType;
import cn.edu.nju.software.greencreditsystem.factory.DAOFactory;
import cn.edu.nju.software.greencreditsystem.util.EmailSender;
import java.util.List;

/**
 * 作者：韩天
 * 创建时间：2011-8-2
 * 类描述：企业的service封装类
 */
public class EnterpriseService {

    /**
     * 方法描述：企业登陆调用的方法
     * param：
     * return：true——登陆成功，false——登陆失败，重新登陆
     */
    public boolean login(String username, String password) {
        EnterpriseDAO eDAO = DAOFactory.getEnterpriseDAOInstance();
        Enterprise enterprise = eDAO.getByUsername(username);

        //判断该用户名是否存在
        if (enterprise != null) {
            //判断用户名对应的用户的密码是否与传进来的密码一致
            if (enterprise.getPassword().equals(password)) {
                return true;
            } else {
                return false;
            }
        } else {  //如用户名不存在直接返回登录失败
            return false;
        }
    }

    /**
     * 方法描述：银行添加一个新的企业用户的方法(并通过邮箱通知企业)
     * param：e——存入数据库的新添加企业
     * return：
     */
    public boolean add(Enterprise e) {
        EnterpriseDAO eDAO = DAOFactory.getEnterpriseDAOInstance();
        boolean addSuccess = eDAO.save(e);

        if (addSuccess) {
            //通过邮箱通知企业登陆并完善信息
            EmailSender es = new EmailSender();
            // 设置发件人地址、收件人地址和邮件标题
            es.setAddress("njucoin@163.com", e.getEmail(), "登陆信息");
            es.send("贵公司在绿色信贷系统中的登陆信息为： " + "\n"
                    + "账号：" + e.getUsername() + "\n"
                    + "密码：" + e.getPassword() + "\n"
                    + "请您及时登陆系统修改账号密码并完善个人信息！");
        }
        return addSuccess;
    }

    /**
     * 方法描述：银行或企业自己更新企业的资料
     * param：e——更改后的企业
     * return：
     */
    public void update(Enterprise e) {
        EnterpriseDAO eDAO = DAOFactory.getEnterpriseDAOInstance();
        eDAO.update(e);
    }

    /**
     * 方法描述：通过企业的用户名来得到企业的实例
     * param：username——企业登陆的用户名
     * return：企业实例
     */
    public Enterprise getEnterpriseByUsername(String enterpriseUsername) {
        EnterpriseDAO eDAO = DAOFactory.getEnterpriseDAOInstance();
        return eDAO.getByUsername(enterpriseUsername);
    }
    
    /**
     * 方法描述：通过企业的id来得到企业的实例
     * param：username——企业登陆的用户名
     * return：企业实例
     */
    public Enterprise getEnterpriseById(int id){
        EnterpriseDAO eDAO = DAOFactory.getEnterpriseDAOInstance();
        return eDAO.getById(id);
    }

    public List<Enterprise> getEnterpriseListByType(EnterpriseType type) {
        //根据企业类型得到属于该类型的所有企业
        EnterpriseDAO eDAO = DAOFactory.getEnterpriseDAOInstance();
        return eDAO.getByTypeLevelOrderly(type.getId());

    }
    
    public List<Enterprise> getAllEnterprise(){
        EnterpriseDAO eDAO = DAOFactory.getEnterpriseDAOInstance();
        return eDAO.getAll();
    }
}
